package klass.parse.util;

import java.nio.ByteBuffer;
import java.nio.ByteOrder;

public class ByteUtils {
    public static int byte2Integer(byte[] bytes) {
        return byte2ByteBuffer(bytes).getInt();
    }

    public static long byte2Long(byte[] bytes) {
        return byte2ByteBuffer(bytes).getLong();
    }

    public static float byte2Float(byte[] bytes) {
        return byte2ByteBuffer(bytes).getFloat();
    }

    public static double byte2Double(byte[] bytes) {
        return byte2ByteBuffer(bytes).getDouble();
    }

    public static short byte2Short(byte[] bytes) {
        return byte2ByteBuffer(bytes).getShort();
    }

    private static ByteBuffer byte2ByteBuffer(byte[] bytes) {
        ByteBuffer buffer = ByteBuffer.wrap(bytes, 0, bytes.length);
        buffer.order(ByteOrder.BIG_ENDIAN);
        return buffer;
    }

    public static String byte2HexStr(byte[] bytes) {
        return byte2HexStr(bytes, 0, bytes.length);
    }

    private static String byte2HexStr(byte[] bytes, int off, int len) {
        StringBuilder sb = new StringBuilder();
        for (int i = off; i < len; ++i) {
            sb.append(String.format("%02X ", bytes[i]));
        }
        return sb.toString();
    }
}
